package com.ruoyi.system.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.ruoyi.system.domain.vo.CartVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.SuperCartItemMapper;
import com.ruoyi.system.domain.SuperCartItem;
import com.ruoyi.system.service.ISuperCartItemService;

/**
 * 购物车Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-08-13
 */
@Service
public class SuperCartItemServiceImpl implements ISuperCartItemService 
{
    @Autowired
    private SuperCartItemMapper superCartItemMapper;

    /**
     * 查询购物车
     * 
     * @param id 购物车主键
     * @return 购物车
     */
    @Override
    public SuperCartItem selectSuperCartItemById(Long id)
    {
        return superCartItemMapper.selectSuperCartItemById(id);
    }

    /**
     * 查询购物车列表
     * 
     * @param superCartItem 购物车
     * @return 购物车
     */
    @Override
    public List<SuperCartItem> selectSuperCartItemList(SuperCartItem superCartItem)
    {
        return superCartItemMapper.selectSuperCartItemList(superCartItem);
    }

    /**
     * 新增购物车
     * 
     * @param superCartItem 购物车
     * @return 结果
     */

    @Override
    public int insertSuperCartItem(SuperCartItem superCartItem)
    {
        // 1. 参数校验
        if (superCartItem.getUserId() == null || superCartItem.getProductId() == null) {
            throw new IllegalArgumentException("用户ID和商品ID不能为空");
        }

        // 2. 查询用户购物车中是否已有该商品
        SuperCartItem queryCondition = new SuperCartItem();
        queryCondition.setUserId(superCartItem.getUserId());
        queryCondition.setProductId(superCartItem.getProductId());
        queryCondition.setDel(0L); // 只查询未删除的记录

        List<SuperCartItem> existingItems = superCartItemMapper.selectSuperCartItemList(queryCondition);

        if (existingItems != null && !existingItems.isEmpty()) {
            // 3. 商品已存在，数量加1
            SuperCartItem existingItem = existingItems.get(0);
            existingItem.setQuantity(existingItem.getQuantity() + 1);

            // 更新价格（如果有变化）
            if (superCartItem.getPrice() != null) {
                existingItem.setPrice(superCartItem.getPrice());
            }

            // 更新状态（如果有传递）
            if (superCartItem.getStatus() != null) {
                existingItem.setStatus(superCartItem.getStatus());
            }

            // 使用updateByUIdAndPId方法更新数量
            return superCartItemMapper.updateByUIdAndPId(existingItem);
        } else {
            // 4. 商品不存在，新增到购物车
            // 设置默认数量为1（如果未指定）
            if (superCartItem.getQuantity() == null || superCartItem.getQuantity() <= 0) {
                superCartItem.setQuantity(1L);
            }
            // 设置默认状态（未删除）
            if (superCartItem.getDel() == null) {
                superCartItem.setDel(0L);
            }
            // 设置默认选中状态
            if (superCartItem.getChecked() == null) {
                superCartItem.setChecked(1L); // 1表示选中
            }

            // 调用原有插入方法
            return superCartItemMapper.insertSuperCartItem(superCartItem);
        }
    }


    /**
     * 修改购物车
     * 
     * @param superCartItem 购物车
     * @return 结果
     */
    @Override
    public int updateSuperCartItem(SuperCartItem superCartItem)
    {
        return superCartItemMapper.updateSuperCartItem(superCartItem);
    }

    /**
     * 批量删除购物车
     * 
     * @param ids 需要删除的购物车主键
     * @return 结果
     */
    @Override
    public int deleteSuperCartItemByIds(Long[] ids)
    {
        return superCartItemMapper.deleteSuperCartItemByIds(ids);
    }

    /**
     * 删除购物车信息
     * 
     * @param id 购物车主键
     * @return 结果
     */
    @Override
    public int deleteSuperCartItemById(Long id)
    {
        return superCartItemMapper.deleteSuperCartItemById(id);
    }

    // 用户的id查询购物车
    @Override
    public ArrayList<CartVo> selectCartByUserId(Long userId) {
        return superCartItemMapper.selectCartByUserId(userId);
    }

    // 根据用户id和商品id修改购物车 修改数量
    @Override
    public int updateByUIdAndPId(SuperCartItem superCartItem) {

        return superCartItemMapper.updateByUIdAndPId(superCartItem);
    }

    // 修改购物车
    @Override
    public int updateCart(SuperCartItem superCartItem) {
        return superCartItemMapper.updateCart(superCartItem);
    }

}
